#include <REG51.H>
#include <stdio.h>
#include <intrins.h> 
#include "UART.h"

unsigned int timeCounter=0;//定时器计数
sfr AUXR=0X8E;

sbit TRIG = P2^0;
sbit ECHO = P2^1;
sbit TRIG_LED = P2^7;//TRIG 发送信号指示灯
sbit ECHO_LED = P2^6;//ECHO 高电平信号指示灯
//sbit TRIG_LED = P2^5;//TRIG 信号指示灯

void Timer20Init(void)		//20微秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	//TMOD &= 0xF0;		//设置定时器模式
	TMOD |= 0x01;		//设置定时器模式
	TL0 = 0xCD;		//设置定时初始值
	TH0 = 0xD4;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	EA=1;
	ET0=1;
	TR0 = 1;		//定时器0开始计时
}
void Delay25us()		//@11.0592MHz
{
	unsigned char i;

	_nop_();
	_nop_();
	i = 66;
	while (--i);
}

void Timer100usInit(void)		//100微秒@11.0592MHz
{
	AUXR |= 0x80;		//定时器时钟1T模式
	TMOD &= 0xF0;		//设置定时器模式
	TL0 = 0xAE;		//设置定时初始值
	TH0 = 0xFB;		//设置定时初始值
	TF0 = 0;		//清除TF0标志
	TR0 = 1;		//定时器0开始计时
}

void Delay100ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 22;
	j = 3;
	k = 227;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Timer0Int() interrupt 0{
	timeCounter++;
	printf("i0 counter +1");
}

void Timer1Int() interrupt 1{
	timeCounter++;
	printf("i1 counter +1");
}

/*
	声速 340m/s  34cm/ms   340mm/ms   3.4mm/10us  34mm/100us

*/
void detecte(){
	//初始化定时器
	Timer100usInit();
	timeCounter=0;
	P2=0X00;
	Delay100ms();//延迟100ms 
	
	TRIG = 1;// 高电平
	Delay25us();
	TRIG = 0;
	TRIG_LED=1;
	Uart1Init();
	while(ECHO == 0){
		//等待ECHO 开始高电平
	}
	ECHO_LED=1;
	TR0=1;//开启定时器
	
	while(ECHO==1){
	}
	//关闭定时器
	TR0=0;
	send(timeCounter);
	printf("\n");
	
}

